package com.dnndo.system.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dnndo.system.domain.dto.CarouselDTO;
import com.dnndo.system.mapper.CarouselMapper;
import com.dnndo.system.service.ICarouselService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class CarouselServiceImpl extends ServiceImpl<CarouselMapper, CarouselDTO> implements ICarouselService {

    private final CarouselMapper carouselMapper;

    @Autowired
    public CarouselServiceImpl(CarouselMapper carouselMapper) {
        this.carouselMapper = carouselMapper;
    }

    /**
     * 查询所有轮播图信息
     * 逻辑说明：
     * 1. 通过Mapper查询所有轮播图DTO列表。
     * 2. 使用BeanDtoVoUtil工具将DTO列表批量转换为VO列表，便于前端展示。
     * 3. 返回VO列表。
     *
     * @return List<CarouseVO> 轮播图展示对象列表
     */
    @Override
    public List<CarouselDTO> selectCarouselList(CarouselDTO dto) {
        // 查询所有轮播图DTO
        List<CarouselDTO> list = carouselMapper.selectCarouselList(dto);
        // 批量DTO转VO，适配前端展示结构
        return list;
    }

    /**
     * 新增轮播图信息
     * 逻辑说明：
     * 1. 参数为轮播图DTO对象，需保证字段完整性。
     * 2. 直接调用Mapper插入方法，写入数据库。
     * 3. 返回受影响的记录数。
     *
     * @param dto 轮播图数据传输对象
     * @return int 受影响的数据库记录数，1表示插入成功
     */
    @Override
    public int insertCarousel(CarouselDTO dto) {
        return carouselMapper.insertCarousel(dto);
    }

    /**
     * 根据ID删除轮播图信息
     * 逻辑说明：
     * 1. 传入轮播图唯一标识符carouselId。
     * 2. 调用Mapper删除方法，删除对应记录。
     * 3. 返回受影响的记录数。
     *
     * @param carouselId 轮播图唯一标识符
     * @return int 受影响的数据库记录数，1表示删除成功
     */
    @Override
    public int deleteCarouselById(Integer carouselId) {
        return carouselMapper.deleteCarouselById(carouselId);
    }
}
